home *** CD-ROM | disk | FTP | other *** search
/ A.C.E. 2 / ACE CD 2.iso / FILES / GAMES / 1-L / FUNS4U51.DMS / FUNS4U51.adf / Addition.AMOS / Addition.amosSourceCode next >
AMOS Source Code  |  1991-10-20  |  10KB  |  255 lines

  1. 'Addition
  2. Break Off : F=Free : Close Editor : Close Workbench 
  3. Auto View Off : Screen Open 0,320,200,16,Lowres : Flash Off : Curs Off : Hide On : Fade 1 : Wait 15
  4. Key Speed 255,255 : Channel 1 To Bob 1 : Sload Start(6),Start(5) : Sam Swapped
  5. LEVEL=0 : Dim PS(163),_TOY_NAME$(10),BF(6)
  6. Global PS(),T$
  7. Restore OBJECT_NAMES
  8. For I=0 To 9
  9.    Read _TOY_NAME$(I)
  10. Next I
  11. Restore PS
  12. For I=0 To 162
  13.    Read PS(I)
  14. Next I
  15. For I=1 To 6
  16.    BF(I)=2
  17. Next I
  18. Sam Swapped
  19. Double Buffer : Autoback 0 : Update Off : Bob Update Off : Goto ACIEEEEEED
  20. _NEW_LEVEL:
  21.    Gosub _LEVS_BIT
  22. ACIEEEEEED:
  23.    AO_BEARS=6 : TF=10 : XP=0 : OLD_XP=0 : TEACHER_FLAG=True : FLAG=True
  24. _RESET_LEVEL:
  25.    Unpack 15 : Autoback 0 : Bob Clear : Gosub CALC_SUMS : Gosub _UPDATE_SCREEN : Bob Clear : Bob Draw : Screen Swap : Wait Vbl 
  26.    Unpack 15 : Bob Clear : FLAG=False : Gosub CALC_SUMS : Gosub _UPDATE_SCREEN : Bob Clear : Bob Draw : Screen Swap : Wait Vbl 
  27.    Auto View On : View : Wait Vbl : Fade 1,$0,$EEE,$8AA,$246,$484,$80,$44E,$22E,$E66,$E44,$EE0,$A42,$620,$E84,$0,$E0E : Wait 15
  28.    Flash 15,"(000,2)(440,2)(880,2)(aa0,2)(cc0,2)(ee0,2)(ee2,2)(ee8,2)(eec,2)(eee,2)(aae,2)(88c,2)(66a,2)(226,2)(004,2)(000,2)"
  29.    TF=11 : Gosub _UPDATE_SCREEN : Wait Vbl : Screen Swap : Wait 4 : TF=12 : Gosub _UPDATE_SCREEN : Wait Vbl : Screen Swap : Wait 4
  30.    TF=11 : Gosub _UPDATE_SCREEN : Wait Vbl : Screen Swap : Wait 4
  31.    Paste Bob 3+(OLD_XP*35),161,49 : Ink 15 : Box 3+(XP*35),161 To 3+(XP*35)+34,187
  32.    Bob Off 14 : Bob Off 15 : Wait 50
  33. MAIN:
  34.    Screen Swap : Wait Vbl 
  35.    Clear Key : Repeat : K$=Inkey$ : SC=Scancode : Until SC<>0
  36.    If K$=" " or SC=78
  37.        Extension_1_022E 1,4,0,0 : OLD_XP=XP : Add XP,1,0 To 8
  38.    End If 
  39.    If SC=79
  40.        Extension_1_022E 1,4,0,0 : OLD_XP=XP : Add XP,-1,0 To 8
  41.    End If 
  42.    If(K$=Chr$(13)) or((K$>="1") and(K$<="9"))
  43.        Extension_1_022E 1,4,0,0
  44.       If((K$>="1") and(K$<="9"))
  45.          OLD_XP=XP : XP=Val(K$)-1
  46.       End If 
  47.       Paste Bob 3+(OLD_XP*35),161,49 : Ink 15 : Box 3+(XP*35),161 To 3+(XP*35)+34,187
  48.       PTEXT[3,189,T$+Str$(XP+1)] : Screen Copy Logic To Physic : Wait 30
  49.       If XP+1<>ANS
  50.           Extension_1_022E 1,2,0,0
  51.          Inc AO_TRIES
  52.          If AO_TRIES>2
  53.             T$="Wrong, the answer is"+Str$(ANS)+"." : FLAG=True
  54.          Else 
  55.             If XP+1<ANS
  56.                T$="Wrong, try a bigger number." : FLAG=False
  57.             Else 
  58.                T$="Wrong, try a smaller number." : FLAG=False
  59.             End If 
  60.          End If 
  61.          PTEXT[3,189,T$] : Screen Copy Logic,0,189,319,199 To Physic,0,189
  62.          For II=0 To 3
  63.             TF=19 : Gosub _UPDATE_SCREEN : Wait Vbl : Screen Swap : Wait 2
  64.             TF=18 : Gosub _UPDATE_SCREEN : Wait Vbl : Screen Swap : Wait 2
  65.             TF=20 : Gosub _UPDATE_SCREEN : Wait Vbl : Screen Swap : Wait 2
  66.             TF=18 : Gosub _UPDATE_SCREEN : Wait Vbl : Screen Swap : Wait 2
  67.          Next II
  68.          TF=10 : Unpack 15 : Gosub CALC_SUMS : Gosub _UPDATE_SCREEN
  69.          XP=0 : Paste Bob 3+(OLD_XP*35),161,49 : Ink 15 : Box 3+(XP*35),161 To 3+(XP*35)+34,187 : Screen Copy Logic To Physic : Wait 4
  70.          TF=11 : Gosub _UPDATE_SCREEN : Wait Vbl : Screen Swap : Wait 4 : TF=12 : Gosub _UPDATE_SCREEN : Wait Vbl : Screen Swap : Wait 4
  71.          TF=11 : Gosub _UPDATE_SCREEN : Wait Vbl : Screen Swap : Wait 4
  72.       Else 
  73.          PTEXT[3,189,"That's right!"] : Screen Copy Logic,0,189,319,199 To Physic,0,189 : OLD_XP=XP : DXP=0 : TF=21
  74.          If AO_BEARS=1
  75.              Extension_1_022E 1,0,0,0
  76.          Else 
  77.              Extension_1_022E 1,1,0,0
  78.          End If 
  79.          For II=0 To 3
  80.             TF=21 : Gosub _UPDATE_SCREEN : Wait Vbl : Screen Swap : Wait 3
  81.             TF=22 : Gosub _UPDATE_SCREEN : Wait Vbl : Screen Swap : Wait 3
  82.          Next II
  83.          Gosub _WALK_BEAR
  84.          If AO_BEARS=0
  85.             BX=194 : BF=17
  86.             Repeat 
  87.                Put Block 1 : Wait 1 : Paste Bob BX,36,BF : Add BF,-1,13 To 17 : BX=BX+8 : Screen Swap : Wait 8
  88.             Until BX>340
  89.             For I=0 To 6
  90.                Put Block 1 : Wait 1 : Paste Bob 270,40,152 : Screen Swap : Wait 3
  91.                Put Block 1 : Wait 1 : Paste Bob 270,40,153 : Screen Swap : Wait 3
  92.                Put Block 1 : Wait 1 : Paste Bob 270,40,154 : Screen Swap : Wait 3
  93.                Put Block 1 : Wait 1 : Paste Bob 270,40,153 : Screen Swap : Wait 3
  94.             Next I
  95.             Wait 100 : Flash Off : Fade 1 : Wait 15 : Goto ACIEEEEEED
  96.          End If 
  97.          TF=10 : Unpack 15 : FLAG=True : Gosub CALC_SUMS : Gosub _UPDATE_SCREEN
  98.          XP=0 : Paste Bob 3+(OLD_XP*35),161,49 : Ink 15 : Box 3+(XP*35),161 To 3+(XP*35)+34,187 : Screen Copy Logic To Physic : Wait 4
  99.          TF=11 : Gosub _UPDATE_SCREEN : Wait Vbl : Screen Swap : Wait 4 : TF=12 : Gosub _UPDATE_SCREEN : Wait Vbl : Screen Swap : Wait 4
  100.          TF=11 : Gosub _UPDATE_SCREEN : Wait Vbl : Screen Swap : Wait 4
  101.       End If 
  102.    End If 
  103.    If SC=89
  104.        Extension_1_022E 1,4,0,0 : Flash Off : Wait 15 : Goto _NEW_LEVEL
  105.    End If 
  106.    If SC=69
  107.        Extension_1_022E 1,4,0,0 : Flash Off : Fade 1 : Wait 15
  108.       For LOP=1 To 15 : Erase LOP : Next LOP
  109.       If Chip Free+Fast Free>250000
  110.          Run "Menu_a500.AMOS"
  111.       Else 
  112.          Run "No_Memory.AMOS"
  113.       End If 
  114.    End If 
  115.    Paste Bob 3+(OLD_XP*35),161,49 : Ink 15 : Box 3+(XP*35),161 To 3+(XP*35)+34,187 : Screen Copy Logic To Physic : Wait Vbl 
  116. Goto MAIN
  117. _UPDATE_SCREEN:
  118.    Put Block 1 : Wait Vbl 
  119.    TXP=164
  120.    If TEACHER_FLAG
  121.       If TF=10 or TF=11 or TF=12
  122.          Paste Bob TXP,36+38,3
  123.       Else 
  124.          Paste Bob TXP,36+38,1
  125.       End If 
  126.       Paste Bob TXP,36,TF
  127.    End If 
  128.    If AO_BEARS>0
  129.       For I=1 To AO_BEARS
  130.          Paste Bob(I-1)*48,100,BF(I)
  131.       Next I
  132.    End If 
  133. Return 
  134. _WALK_BEAR:
  135.    Dec AO_BEARS : BX=AO_BEARS*48 : BF=0 : Gosub _UPDATE_SCREEN : Bob 1,BX,80,9-BF : Screen Copy Logic To Physic : Wait Vbl 
  136.    Repeat 
  137.       Bob 1,BX,80,9-BF : Add BF,1,0 To 5 : BX=BX+8 : Bob Clear : Bob Draw : Screen Swap : Wait 5
  138.    Until BX>329
  139. Return 
  140. CALC_SUMS:
  141.    If FLAG
  142.       AO_TRIES=0
  143.    End If 
  144.    If LEVEL=0
  145.       If FLAG
  146.          NUM1=Rnd(8)+1 : ANS=NUM1 : OBJ=Rnd(9)
  147.       End If 
  148.       For Y=0 To 2
  149.          For X=0 To 3
  150.             I=Y*4+X
  151.             If I<NUM1
  152.                Paste Bob 45+(X*35)-12,30+(Y*32)-12,51+OBJ
  153.             End If 
  154.          Next X
  155.       Next Y
  156.       PTEXT[3,189,"How many "+_TOY_NAME$(OBJ)+"?"]
  157.    End If 
  158.    If LEVEL=1
  159.       If FLAG
  160.          Repeat : NUM1=Rnd(4)+1 : NUM2=Rnd(4)+1 : ANS=NUM1+NUM2 : Until ANS>=2 and ANS<=9 : OBJ=Rnd(9)
  161.       End If 
  162.       For Y=0 To 2
  163.          For X=0 To 1
  164.             I=Y*2+X
  165.             If I<NUM1
  166.                Paste Bob 34+(X*35)-14,30+(Y*31)-8,51+OBJ
  167.             End If 
  168.             If I<NUM2
  169.                Paste Bob 130+(X*35)-14,30+(Y*31)-8,51+OBJ
  170.             End If 
  171.          Next X
  172.       Next Y
  173.       Paste Bob 42,95,27+NUM1 : Paste Bob 140,95,27+NUM2 : Paste Bob 92,55,38
  174.       PTEXT[3,189,"How many "+_TOY_NAME$(OBJ)+"?"]
  175.    End If 
  176.    If LEVEL=2
  177.       If FLAG
  178.          Repeat 
  179.             NUM1=Rnd(8)+1 : NUM2=Rnd(8)+1 : ANS=NUM1+NUM2
  180.          Until ANS>=2 and ANS<=9
  181.       End If 
  182.       Paste Bob 50,45,39+NUM1 : Paste Bob 125,45,39+NUM2 : Paste Bob 92,50,50
  183.       PTEXT[3,189,"What does this add up to?"]
  184.    End If 
  185.    If FLAG
  186.       Get Block 1,0,30,320,130
  187.    End If 
  188. Return 
  189. _LEVS_BIT:
  190. LEV=LEVEL+1
  191. Flash Off : Fade 1 : Wait 15 : Bob Off : Wait Vbl : Bob Clear : Wait Vbl : Autoback 2 : Rem Screen Open 0,320,200,16,Lowres : Flash Off : Curs Off : Double Buffer : Autoback 2
  192. YY=80 : Cls 0
  193. SPOS=155
  194. For L=0 To 2
  195.    Paste Bob 89+L*47,44+YY,L+SPOS
  196. Update : Next L
  197. Paste Bob 128,1+YY-60,SPOS+8
  198. Bob 1,50+LEV*48,44+YY,4+SPOS
  199. Limit Bob 0,0 To 240,44+YY : Wait 5
  200.  _FADE[1,1] : Update On 
  201. Move Y 1,"(1,-1,20)" : Move On 1 : Wait 20
  202. Anim 1,"("+Str$(SPOS+3)+",8)("+Str$(SPOS+4)+",8)("+Str$(SPOS+5)+",8)("+Str$(SPOS+4)+",8)("+Str$(SPOS+3)+",8)("+Str$(SPOS+4)+",8)"
  203. Anim On 1 : Wait 48
  204. MFOL:
  205. Inc LEV
  206. If LEV=4 Then LEV=1 : Goto TTL1
  207. Move X 1,"(1,1,48)" : Move Y 1,"(1,-1,6)(2,-1,2)(4,0,1)(2,1,2)(1,1,2)(2,1,2) (2,-1,2)(1,-1,2)(2,-1,2)(4,0,1)(2,1,2)(1,1,6)"
  208. Anim 1,"("+Str$(SPOS+6)+",1)" : Anim On 1
  209. Update Off : Anim On 1 : Move On 1
  210. While Movon(1)>0
  211.    Wait Vbl : Update 
  212. Wend 
  213. Update On 
  214. Anim 1,"("+Str$(SPOS+6)+",55)("+Str$(SPOS+4)+",1)" : Anim On 1
  215. Wait 60
  216. GOEIO:
  217. Timer=0 : Clear Key : I$=""
  218. While I$<>" " and(I$<>Chr$(13))
  219.    I$=Inkey$ : SC=Scancode
  220.    If Jright(1) or(Mouse Key=2) or SC=78 or SC=89 Then I$=" "
  221.    If Timer>50*4 or Fire(1) or Mouse Key=1 Then I$=Chr$(13)
  222. Wend 
  223.  Extension_1_022E 1,4,0,0
  224. If I$=" " Then Goto MFOL
  225. Fade 1 : Wait 15 : Autoback 0
  226. Goto NDSUB
  227. TTL1:
  228. Anim 1,"("+Str$(SPOS+7)+",1)"
  229. Move X 1,"(1,-1,10)(1,-2,20)" : Move Y 1,"(1,1,20)" : Anim On : Move On 
  230. Wait 100 : Bob 1,50+LEV*48,44+YY,4+SPOS : Move Y 1,"(1,-1,20)" : Move On 1 : Wait 20
  231. Anim 1,"("+Str$(SPOS+3)+",8)("+Str$(SPOS+4)+",8)("+Str$(SPOS+5)+",8)("+Str$(SPOS+4)+",8)("+Str$(SPOS+3)+",8)("+Str$(SPOS+4)+",8)"
  232. Anim On 1 : Wait 48
  233. Goto GOEIO
  234. NDSUB:
  235. LEVEL=LEV-1
  236.    Auto View Off : Screen Open 0,320,200,16,Lowres : Flash Off : Curs Off : Hide On : Double Buffer : Autoback 0 : Update Off : Bob Update Off : Fade 1 : Wait 15
  237. Goto ACIEEEEEED
  238. Procedure PTEXT[X,Y,T$]
  239.    Ink 13 : Bar 1,189 To 319,198
  240.    For I=1 To Len(T$)
  241.       C=Asc(Mid$(T$,I,1))-32 : Paste Bob X,Y,C+61 : X=X+PS(C)
  242.    Next I
  243. End Proc
  244. OBJECT_NAMES:
  245.    Data "cars","apples","dolls","houses","tanks","balls","robots","frogs","fish","computers"
  246. PS:
  247.    Data 6,4,0,0,7,0,0,4,6,6,0,8,7,9,6,8,8,8,8,8,8,8,8,8,8,8,6,6,0,0
  248.    Data 0,8,0,8,8,8,8,8,8,8,8,6,8,8,8,9,8,8,8,8,8,8,8,8,8,9,8,8,8,0
  249.    Data 0,0,0,9,6,8,8,7,8,8,7,8,8,6,6,8,6,9,8,8,8,8,8,8,8,8,8,9,8,8
  250.    Data 8,8,8,8,8,8,0,8,8,8,8,8,0,8,8,8,8,6,6,6,0,0,0,0,0,8,8,8,8,8
  251.    Data 0,0,0,0,0,0,0,0,8,6,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  252.    Data 0,0,0,0,0,0,0,0,0,0,0,0,0
  253. Procedure _FADE[X,S]
  254. If X=1 Then Fade S,$0,$EEE,$8AA,$246,$484,$80,$44E,$22E,$E66,$E44,$EE0,$A42,$620,$E84,$0,$E0E : Wait S*15 Else Fade S : Wait S*15
  255. End Proc